library(ggplot2)
library(gghalves)
#install.packages("gghalves")
library(tidyverse)
#引用包
library(GSVA)
library(limma)
library(GSEABase)
library(tidyverse)
library(reshape2)
library(ggpubr)
setwd("E:\\1.Ovarian_Treg\\1.picture\\18.SSGSEA")          #设置工作目录

#定义ssGSEA的函数
immuneScore=function(expFile=null, gmtFile=null, socreFile=null){
  #读取表达输入文件，并对输入文件处理
  rt=read.table(expFile, header=T, sep="\t", check.names=F)
  rt=as.matrix(rt)
  rownames(rt)=rt[,1]
  exp=rt[,2:ncol(rt)]
  dimnames=list(rownames(exp),colnames(exp))
  mat=matrix(as.numeric(as.matrix(exp)),nrow=nrow(exp),dimnames=dimnames)
  mat=avereps(mat)
  mat=mat[rowMeans(mat)>0,]
  
  #读取数据集文件
  geneSet=getGmt(gmtFile, geneIdType=SymbolIdentifier())
  
  #ssgsea分析
  ssgseaScore=gsva(mat, geneSet, method='ssgsea', kcdf='Gaussian', abs.ranking=TRUE)
  #定义ssGSEA score矫正函数
  normalize=function(x){
    return((x-min(x))/(max(x)-min(x)))}
  #对ssGSEA score进行矫正
  ssgseaOut=normalize(ssgseaScore)
  ssgseaOut=rbind(id=colnames(ssgseaOut),ssgseaOut)
  write.table(ssgseaOut, file=socreFile, sep="\t", quote=F, col.names=F)
}

#ssGSEA分析
immuneScore(expFile="OV_TPM.txt", gmtFile="immune.gmt", socreFile="immScore.TCGA.txt")
#immuneScore(expFile="ICGCsymbol.txt", gmtFile="immune.gmt", socreFile="immScore.ICGC.txt")


data=read.table("immScore.TCGA.txt", header=T, sep="\t", check.names=F, row.names=1)
#去除正常样品
group=sapply(strsplit(colnames(data),"\\-"), "[", 4)
group=sapply(strsplit(group,""), "[", 1)
group=gsub("2", "1", group)
data=data[,group==0]

colnames(data)=gsub("(.*?)\\-(.*?)\\-(.*?)\\-(.*?)\\-.*", "\\1\\-\\2\\-\\3", colnames(data)) 
data=data[,!duplicated(colnames(data))]
data=t(data)
risk=read.table("rs_tcga.txt",header=T,sep="\t",row.names=1,check.names=F)
risk$risk=ifelse(risk$riskScore>median(risk$riskScore),"high","low")
#合并数据
sameSample=intersect(row.names(data),row.names(risk))
data=data[sameSample,,drop=F]
risk=risk[sameSample,,drop=F]
rt=cbind(data,risk[,c("riskScore","risk")])
rt=rt[,-(ncol(rt)-1)]
#对免疫细胞绘制箱线图
immCell=c("aDCs","B_cells","CD8+_T_cells","DCs","iDCs","Macrophages",
          "Mast_cells","Neutrophils","NK_cells","pDCs","T_helper_cells",
          "Tfh","Th1_cells","Th2_cells","TIL","Treg")
rt1=rt[,c(immCell,"risk")]
##雷达图
library(dplyr)
datamean=group_by(rt1, risk) %>% summarize_each(funs(mean))
#devtools::install_github('ricardo-bion/ggradar', dependencies = TRUE)
datamean[1,][c(2:5,9:11,13:17)]=datamean[1,][c(2:5,9:11,13:17)]-0.05
library(ggradar)
#max(data_new$Score)
#min(data_new$Score)
ggradar(datamean,
        base.size = 1,# 文本大小
        font.radar = "Times",# 字体
        #values.radar = "A", # 添加文本
        #axis.labels = c("a","b","c","d","e","f","g"),# 修改坐标轴标签
        grid.min = 0.2,# 最小网线位置
        grid.mid=0.5,# 中间网线位置
        grid.max = 1,# 最大网线位置
        values.radar = c("0.2", "0.5", "1"),
        #centre.y = 0.01, # 中心点位置
        # plot.extent.x.sf=1,# 沿X轴进行缩放，值越小放大越大
        #plot.extent.y.sf=1,# 沿Y轴进行缩放
        x.centre.range = 9, #
        #label.centre.y = T,#是否绘制中心点标签
        grid.line.width = 1, # 网线的粗细
        gridline.min.linetype = "longdash",# 副网线的线形
        gridline.mid.linetype = "longdash",# 主网线的线形
        gridline.max.linetype = "longdash", # 最大网线的线形
        gridline.min.colour = "grey",# 副网线的颜色
        gridline.mid.colour = "#9D4C21", # 主网线的颜色
        gridline.max.colour = "grey",# 最大网线的颜色
        grid.label.size = 6, #网线数字标签大小
        #gridline.label.offset = -0.5, # 网线标签的平移
        label.gridline.min = F,# 是否显示副网线数字标签
        label.gridline.mid = F,# 是否显示主网线数字标签
        label.gridline.max = F, # 是否显示最大网线数字标签
        axis.label.offset = 1.15, #轴标签平移
        axis.label.size = 5, # 轴标签大小
        axis.line.colour = "#78302E", #轴线颜色
        group.line.width = 1.5 ,# 分组数据框线的粗细
        group.point.size = 6, # 分组数据点的大小
        group.colours = c("#FC4E07", "#00AFBB"), # 分组的颜色
        background.circle.colour = "#E5F1FB",# 背景填充色
        background.circle.transparency = 0.2, # 背景透明度
        plot.legend = if
        (nrow(datamean) > 1) TRUE else FALSE, # 是否绘制图例
        legend.title = "",
        plot.title = "",
        legend.text.size = 14, # 图例文本大小
        legend.position = "bottom" # 图例位置
)


##雷达图
library(dplyr)
datamean=group_by(rt1, risk) %>% summarize_each(funs(mean))
datamean[1,][c(2:13)]=datamean[1,][c(2:13)]-0.05
#devtools::install_github('ricardo-bion/ggradar', dependencies = TRUE)
library(ggradar)
library(ggplot2)
library(ggforce)
max(data_new$Score)
min(data_new$Score)
ggradar(datamean,
        base.size = 1,# 文本大小
        font.radar = "Times",# 字体
        #values.radar = "A", # 添加文本
        #axis.labels = c("a","b","c","d","e","f","g"),# 修改坐标轴标签
        grid.min = 0.2,# 最小网线位置
        grid.mid=0.5,# 中间网线位置
        grid.max = 1,# 最大网线位置
        values.radar = c("0.2", "0.5", "1"),
        #centre.y = 0.01, # 中心点位置
        # plot.extent.x.sf=1,# 沿X轴进行缩放，值越小放大越大
        #plot.extent.y.sf=1,# 沿Y轴进行缩放
        x.centre.range = 9, #
        #label.centre.y = T,#是否绘制中心点标签
        grid.line.width = 1, # 网线的粗细
        gridline.min.linetype = "longdash",# 副网线的线形
        gridline.mid.linetype = "longdash",# 主网线的线形
        gridline.max.linetype = "longdash", # 最大网线的线形
        gridline.min.colour = "grey",# 副网线的颜色
        gridline.mid.colour = "#007A87", # 主网线的颜色
        gridline.max.colour = "grey",# 最大网线的颜色
        grid.label.size = 6, #网线数字标签大小
        #gridline.label.offset = -0.5, # 网线标签的平移
        label.gridline.min = F,# 是否显示副网线数字标签
        label.gridline.mid = F,# 是否显示主网线数字标签
        label.gridline.max = F, # 是否显示最大网线数字标签
        axis.label.offset = 1.15, #轴标签平移
        axis.label.size = 5, # 轴标签大小
        axis.line.colour = "#78302E", #轴线颜色
        group.line.width = 1.5 ,# 分组数据框线的粗细
        group.point.size = 6, # 分组数据点的大小
        group.colours = c("#FC4E07", "#00AFBB"), # 分组的颜色
        background.circle.colour = "#E5F1FB",# 背景填充色
        background.circle.transparency = 0.2, # 背景透明度
        plot.legend = if
        (nrow(datamean) > 1) TRUE else FALSE, # 是否绘制图例
        legend.title = "",
        plot.title = "",
        legend.text.size = 14, # 图例文本大小
        legend.position = "bottom" # 图例位置
)


